home *** CD-ROM | disk | FTP | other *** search
/ El Gran Louvre 2 / El Gran Louvre II (ACTA EMME)(1996).ISO / setup.mst < prev    next >
Text File  |  1996-06-12  |  11KB  |  444 lines

  1. '$DEFINE DEBUG   ''Define for script development/debugging
  2.  
  3. '$INCLUDE 'setupapi.inc'
  4. '$INCLUDE 'msdetect.inc'
  5. '$INCLUDE 'setst.inc'
  6.  
  7. ''Dialog ID's
  8. CONST ASKQUIT      = 200
  9. CONST DESTPATH     = 300
  10. CONST EXITFAILURE  = 400
  11. CONST EXITQUIT     = 600
  12. CONST EXITSUCCESS  = 700
  13. CONST OPTIONS      = 800
  14. CONST APPHELP      = 900
  15. CONST RESTART      = 2600
  16. CONST RESTARTII    = 2700
  17. CONST CUSTINST     = 6200
  18. CONST TELEINST     = 6250
  19. CONST TOOBIG       = 6300
  20. CONST BADPATH      = 6400
  21.  
  22. ''Bitmap ID
  23. CONST LOGO         = 1
  24.  
  25. ''File Types
  26. CONST APPFILES     = 1
  27. CONST OPTFILES1    = 2
  28. CONST OPTFILES2    = 3
  29.  
  30. GLOBAL SRCDIR$
  31. GLOBAL isvhd$
  32. GLOBAL DEST$        ''Default destination directory.
  33. GLOBAL WINDRIVE$    ''Windows drive letter.
  34. GLOBAL WINDIR$
  35. GLOBAL WINSYSDIR$
  36. GLOBAL TBKDIR$
  37. GLOBAL SndDIR$
  38. GLOBAL SndZiel$
  39. GLOBAL TBKDEST$
  40. GLOBAL NEEDET&
  41. GLOBAL DRVSPACE&
  42. GLOBAL tb15Path$
  43.  
  44. '' Driver 
  45. CONST ADDVFW            = 1
  46. GLOBAL VFWPATH$
  47.  
  48.  
  49. ''CustInst list symbol names
  50.  
  51. ''Dialog list symbol names
  52. GLOBAL STATUSTEXT$
  53. GLOBAL DRIVETEXT$
  54.  
  55.  
  56. DECLARE SUB BuildCopyList
  57. DECLARE SUB CalculateCopyList
  58. DECLARE SUB SetDriveStatus
  59. DECLARE SUB RegisterEntries
  60. DECLARE SUB CreateIniEntries
  61. DECLARE SUB SetupProgman
  62.  
  63. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  64.  
  65. DECLARE FUNCTION OnWindowsNT LIB "INIUPD.DLL" AS INTEGER
  66. DECLARE FUNCTION VflatdPresent LIB "iniupd.DLL" AS INTEGER
  67. DECLARE SUB Reboot LIB "iniupd.dll"
  68. DECLARE fUNCTION ExitWindowsExec  LIB "User" (Exec$, Param$) AS INTEGER
  69. DECLARE FUNCTION vhdinstall  AS STRING
  70.  
  71. TRAP CleanupTrap From "MSSHLSTF.DLL"
  72.  
  73. End Trap           
  74.     
  75.  
  76.  
  77.     Inst% = HinstFrame()
  78.  
  79.  
  80.     ii% = CreateCover(0, 0, 0, 0, 0)
  81.     
  82.     ret% = Ctl3dRegister(Inst%)
  83.     ret% = Ctl3dAutoSubClass(Inst%)
  84.  
  85.     hSetup = InitSetup(COMMAND$)
  86.     hWnd% = HwndFrame()
  87.     ret% = SubSetMainWin(hWnd%)
  88.     
  89.     ii% = CloseCover()
  90.  
  91.  
  92.     WIN32ENABLED% = 0
  93.     MajorVer% = GetWindowsMajorVersion()
  94.     MinorVer% = GetWindowsMinorVersion()
  95.  
  96.  
  97.     IF MajorVer% < 3 OR (MajorVer% = 3 AND MinorVer% < 10) THEN
  98.     i% = DoMsgBox("Se requiere Microsoft Windows versi≤n 3.10 o sucesiva", "Problema de instalaci≤n", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  99.     END
  100.     END IF
  101.  
  102.  
  103.     IF DeviceColor() <= 256 THEN
  104.        ii% = DoMsgBox("Modifique la resoluci≤n de su pantalla para la utilizaci≤n de 32.000 colores mφnimo.", "Hardware", MB_OK)
  105.     END IF
  106.  
  107. ON ERROR GOTO QUIT
  108.  
  109. INIT:
  110.     CUIDLL$ = "mscuistf.dll"            ''custom user interface dll
  111.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  112.     SetTitle "El Louvre"
  113.     VFWPATH$ = "VFW"
  114.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  115.     IF szInf$ = "" THEN
  116.     szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  117.     END IF
  118.  
  119.     ReadInfFile szInf$
  120.  
  121.     WINDRIVE$ = UCASE$(MID$(GetWindowsDir, 1, 1))
  122.     DEST$ = WINDRIVE$ + ":\louvre"
  123.     WINDIR$ = GetWindowsDir()
  124.     WINSYSDIR$ = GetWindowsSysDir()
  125.  
  126.     ''CustInst list symbols
  127.  
  128.     STATUSTEXT$  = "StatusItemsText"
  129.     DRIVETEXT$   = "DriveStatusText"
  130.  
  131.     
  132.     FOR i% = 1 TO 3 STEP 1
  133.     AddListItem STATUSTEXT$, ""
  134.     NEXT i%
  135.  
  136.     FOR i% = 1 TO 2 STEP 1
  137.     AddListItem DRIVETEXT$, ""
  138.     NEXT i%
  139.  
  140.     ReplaceListItem DRIVETEXT$, 2, DEST$
  141.     
  142.     SetDriveStatus
  143.  
  144.  
  145. CUSTINST:
  146.     sz$ = UIStartDlg(CUIDLL$, TELEINST, "FTeleInstDlgProc", APPHELP, HELPPROC$)
  147.  
  148.     IF sz$ = "CONTINUE" THEN
  149.     ''Install only if it will fit.
  150.         BuildCopyList
  151.         CalculateCopyList
  152.         IF NEEDET& <> 0 THEN
  153.             GOSUB TOOBIG
  154.             GOTO CUSTINST
  155.         END IF
  156.     UIPop 1
  157.     GOTO INSTALL
  158.     ELSEIF sz$ = "PATH" THEN
  159.     GOTO GETPATH
  160.     ELSEIF sz$ = "REACTIVATE" THEN
  161.     SetDriveStatus
  162.     GOTO CUSTINST
  163.     ELSE
  164.     GOSUB ASKQUIT
  165.     GOTO CUSTINST
  166.     END IF
  167.  
  168.  
  169.  
  170. INSTALL:
  171.     CreateDir DEST$, cmoNone
  172.    
  173.     BuildCopyList
  174.     CopyFilesInCopyList
  175.     CreateIniEntries
  176.     RegisterEntries
  177.     SetupProgman
  178.  
  179.  
  180.     RESTRT% = RestartListEmpty ()
  181.     Exe$ = DEST$ + "\_msrstrt.exe"
  182.     Batch$ = DEST$ + "\_mssetup.bat"
  183.     empty$ = ""
  184.     
  185.  RESTART:
  186. IF RESTRT% = 0 THEN
  187.     sz$ = UIStartDlg(cuidll$, RESTART, "FInfo0DlgProc", 0, "")
  188.     IF sz$ = "REACTIVATE" THEN
  189.         GOTO RESTART
  190.     ENDIF
  191.     I% = ExitExecRestart ()
  192.     RemoveFile Exe$, cmoForce
  193.     RemoveFile Batch$, cmoForce
  194.     END
  195. ELSE
  196.     sz$ = UIStartDlg(CUIDLL$, RESTARTII, "FQuitDlgProc", 0, "")
  197.     IF sz$ = "CONTINUE" THEN
  198.         I% = ExitWindowsExec (Exe$, empty$)
  199.         IF I% = 0 THEN
  200.             GOTO RESTART
  201.         ELSE
  202.             END
  203.         ENDIF
  204.     ELSEIF sz$ = "EXIT" THEN
  205.         UIPopAll
  206.         END
  207.     ELSEIF sz$ = "REACTIVATE" THEN
  208.         GOTO RESTART
  209.     ELSE
  210.         UIPop 1
  211.     END IF
  212. END IF
  213.  
  214.  
  215. QUIT:
  216.     ''ON ERROR GOTO ERRQUIT
  217.  
  218.     IF ERR = 0 THEN
  219.     dlg% = EXITSUCCESS
  220.     ELSEIF ERR = STFQUIT THEN
  221.     dlg% = EXITQUIT
  222.     ELSE
  223.     dlg% = EXITQUIT          ''EXITFAILURE
  224.     END IF
  225.  
  226.  
  227. ERRQUIT:
  228.     i% = DoMsgBox("El Louvre no ha sido instalado correctamente", " ",MB_OK+MB_TASKMODAL+MB_ICONHAND)
  229.     END
  230.  
  231.  
  232.  
  233. GETPATH:
  234.     SetSymbolValue "EditTextIn", DEST$
  235.     SetSymbolValue "EditFocus", "END"
  236. GETPATHL1:
  237.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  238.  
  239.     IF sz$ = "CONTINUE" THEN
  240.     olddest$ = DEST$
  241.     DEST$ = GetSymbolValue("EditTextOut")
  242.  
  243.     ''Validate new path.
  244.     IF IsDirWritable(DEST$) = 0 THEN
  245.         GOSUB BADPATH
  246.         GOTO GETPATHL1
  247.     END IF
  248.     UIPop 1
  249.  
  250.     ''Truncate display if too long.
  251.     IF LEN(DEST$) > 23 THEN
  252.         ReplaceListItem DRIVETEXT$, 2, MID$(DEST$, 1, 23)+"..."
  253.     ELSE
  254.         ReplaceListItem DRIVETEXT$, 2, DEST$
  255.     END IF
  256.  
  257.     ''Recalc if path changed.
  258.     IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  259.         SetDriveStatus
  260.     END IF
  261.  
  262.     olddest$ = ""
  263.     GOTO CUSTINST
  264.     ELSEIF sz$ = "REACTIVATE" THEN
  265.     SetDriveStatus
  266.     GOTO GETPATHL1
  267.     ELSEIF sz$ = "EXIT" THEN
  268.     GOSUB ASKQUIT
  269.     GOTO GETPATHL1
  270.     ELSE
  271.     UIPop 1
  272.     GOTO CUSTINST
  273.     END IF
  274.  
  275.  
  276.  
  277. TOOBIG:
  278.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  279.     IF sz$ = "REACTIVATE" THEN
  280.     SetDriveStatus
  281.     GOTO TOOBIG
  282.     END IF
  283.     UIPop 1
  284.     RETURN
  285.  
  286.  
  287.  
  288. BADPATH:
  289.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  290.     IF sz$ = "REACTIVATE" THEN
  291.     SetDriveStatus
  292.     GOTO BADPATH
  293.     END IF
  294.     UIPop 1
  295.     RETURN
  296.  
  297.  
  298.  
  299. ASKQUIT:
  300.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  301.  
  302.     IF sz$ = "EXIT" THEN
  303.     UIPopAll
  304.     ERROR STFQUIT
  305.     ELSEIF sz$ = "REACTIVATE" THEN
  306.     GOTO ASKQUIT
  307.     ELSE
  308.     UIPop 1
  309.     END IF
  310.     RETURN
  311.  
  312.  
  313.  
  314. SUB CalculateCopyList STATIC
  315.     NEEDET& = GetCopyListCost("", "", "")   
  316. END SUB
  317.  
  318. SUB SetupProgman STATIC
  319.     '' Todo Add Progman Commands
  320.  
  321.     CreateProgmanGroup "E.M.M.E. MULTIMEDIA", "", cmoOverwrite
  322.     ShowProgmanGroup "E.M.M.E. MULTIMEDIA", 1, cmoNone
  323.     CreateProgmanItem "E.M.M.E. MULTIMEDIA", "El Louvre", MakePath(DEST$,"louvre.exe"),MakePath(DEST$,"louvre.ico"), cmoOverwrite 
  324.  
  325. END SUB
  326.  
  327. SUB BuildCopyList STATIC
  328.  
  329.     SRCDIR$  = GetSymbolValue("STF_SRCDIR")
  330.     TBSRC$   = MakePath(SRCDIR$, TBKDIR$)        
  331.     sndSRC$  = MakePath(SRCDIR$, sndDIR$)        
  332.     snddest$ = MakePath(Dest$, SndZiel$)         
  333.     TBKDEST$ = MakePath(WINDIR$, "asym\runtime\")        
  334.     source$ = MakePath(srcdir$, "files\")        
  335.  
  336.     ClearCopyList
  337.         addsectionFilesToCopyList "DEFAULT", SOURCE$, DEST$
  338.         addsectionFilesToCopyList "SISTEM", SOURCE$, WINSYSDIR$
  339.         ''addsectionFilesToCopyList "WINDO", SOURCE$, WINDIR$
  340.     IF ADDVFW <> 0 THEN                        
  341.     '' Video for Windows Files
  342.  
  343.     VFWSRC$= MakePath(SRCDIR$, VFWPATH$)    
  344.     addsectionFilesToCopyList "VfW Runtime", VFWSRC$, WINSYSDIR$
  345.     addsectionFilesToCopyList "OLE2", VFWSRC$, WINSYSDIR$
  346.     addsectionFilesToCopyList "ACM Drivers", VFWSRC$, WINSYSDIR$
  347.     addsectionFilesToCopyList "MPlayer", VFWSRC$, WINDIR$
  348.     addsectionFilesToCopyList "AVICodecs", VFWSRC$, WINSYSDIR$
  349.  
  350.     END IF
  351. END SUB
  352.  
  353.  
  354. SUB CreateIniEntries STATIC
  355.  
  356.     '' Default Entries
  357.  ini$ = MakePath(dest$, "\louvre.INI")
  358.  
  359.     CreateIniKeyValue Dest$ + "\louvre.INI","parameters", "data", dest$+"\", cmoOverwrite
  360.     CreateIniKeyValue Dest$ + "\louvre.INI","parameters", "pictures", srcdir$, cmoOverwrite
  361.      
  362.     IF ADDVFW <> 0 THEN                        
  363.     '' Video for Windows Entries
  364.  
  365.     IF VflatdPresent() = 0 THEN
  366.        CreateSysIniKeyValue WinDir$ + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite
  367.     END IF
  368.         isvhd$ = vhdinstall 
  369.     IF isvhd$ = "yes" THEN
  370.         CreateIniKeyValue WinDir$ + "system.ini", "386enh", "device", "VCDENH.386", cmoOverwrite
  371.     END IF
  372.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV32", "ir32.dll", cmoOverwrite
  373.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV31", "ir32.dll", cmoOverwrite
  374.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.RT21", "ir21.dll", cmoOverwrite
  375.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.YVU9", "iyvu9.dll", cmoOverwrite
  376.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite
  377.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  378.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite
  379.     CreateIniKeyValue WinDir$ + "WIN.INI", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  380.     CreateIniKeyValue WinDir$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  381.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  382.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite
  383.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite
  384.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "ir21.dll", "Intel Indeo(TM) Video R2.1", cmoOverwrite
  385.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite
  386.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite
  387.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite
  388.  
  389.  
  390. END IF
  391. END SUB
  392.  
  393.  
  394. SUB RegisterEntries STATIC
  395.  
  396.     '' Default Registers
  397.  
  398.     
  399.     IF ADDVFW <> 0 THEN                        
  400.     '' Video for Windows Entries
  401.  
  402.         Run ("regedit.exe /s " + MakePath(WinDir$, "mplayer.reg"))
  403.         Run ("regedit.exe /s " + MakePath(WinSysDir$, "OLE2.reg"))
  404.         Run ("regedit.exe /s " + MakePath(WinSysDir$, "cleanup.reg"))
  405.  
  406.     END IF
  407. END SUB
  408.  
  409.  
  410. SUB SetDriveStatus STATIC
  411.  
  412.     free& = GetFreeSpaceForDrive(MID$(DEST$, 1, 1))
  413.     ReplaceListItem DRIVETEXT$, 1, STR$(free& / 1024) + " K"
  414.  
  415. END SUB
  416.  
  417. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  418.     IF szDir$ = "" THEN
  419.     MakePath = szFile$
  420.     ELSEIF szFile$ = "" THEN
  421.     MakePath = szDir$
  422.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  423.     MakePath = szDir$ + szFile$
  424.     ELSE
  425.     MakePath = szDir$ + "\" + szFile$
  426.     END IF
  427. END FUNCTION
  428.  
  429. FUNCTION vhdinstall STATIC AS STRING
  430.   TROVATO% = 0
  431.   canale% = FREEFILE    
  432.   OPEN  windir$ + "system.ini" for INPUT AS #canale%
  433.   WHILE NOT (EOF(1)) AND (TROVATO% = 0)
  434.       LINE INPUT #canale% , RETVAL$    
  435.     TROVATO% = INSTR (1, UCASE$(RETVAL$) ,"VCDENH.386")
  436.   WEND
  437.   CLOSE #canale%
  438.   IF (TROVATO% > 0) THEN
  439.         vhdinstall = "no"
  440.   ELSE
  441.     vhdinstall = "yes"
  442.   END IF
  443.  
  444. END FUNCTION